package cl.zeke.cursos.jsf2spring3jpa2.vista.managedbeans.ejercicio2;

import cl.zeke.cursos.jsf2spring3jpa2.util.LinksUtil;
import cl.zeke.cursos.jsf2spring3jpa2.util.PdfUtil;
import cl.zeke.java.commons.jsf2.Jsf2Util;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

@Component
@Scope("view")
public class Ejercicio2Pag1Bean implements Serializable {
    
    private static Logger log = 
            LoggerFactory.getLogger(Ejercicio2Pag1Bean.class);
    
    private String textoConcatenado = "";
    
    private String texto;
    
    @Autowired
    private LinksUtil linksUtil;
    
    @Autowired
    private PdfUtil pdfUtil;
    
    @PostConstruct
    public void iniciar() {
        log.debug("Iniciando Ejercicio2Pag1");
    }
    
    public void concatenar() {
        log.debug("concatenando");
        this.textoConcatenado += this.texto;
        this.texto = null;
    }
    
    public String crearPDF() throws IOException {
        HttpServletResponse response = Jsf2Util.obtenerHttpServletResponse();
        String url = linksUtil.obtenerUrlVista(("/jsp/taller.jspx"));
        response.setContentType("application/pdf");
        response.addHeader("Content-Disposition", "attachment; filename=holaMundo.pdf");
        OutputStream os = null;
        try {
            os = response.getOutputStream();
            pdfUtil.generarDesdeUrl(url, os);
        } catch (Exception ex) {
            log.error("error", ex);
        } finally {
            os.flush();
            os.close();
        }
        FacesContext.getCurrentInstance().responseComplete();
        return "";
    }
    
    public String irPagina2() {
        log.debug("enviando a la pagina 2 del ejercicio 1");
        Jsf2Util.setRequestAttribute(
                "textoConcatenado", textoConcatenado);
        return "/ejercicio2/pagina2.xhtml";
    }

    /*getters and setters*/
    public String getTextoConcatenado() {
        return textoConcatenado;
    }

    public void setTextoConcatenado(String textoConcatenado) {
        this.textoConcatenado = textoConcatenado;
    }

    public String getTexto() {
        return texto;
    }

    public void setTexto(String texto) {
        this.texto = texto;
    }
}
